Windows: Update code for monolithic GTK DLL
authorChun-wei Fan <fanchunwei@src.gnome.org>
Thu, 3 Nov 2016 08:03:08 +0000 (16:03 +0800)
committerChun-wei Fan <fanchunwei@src.gnome.org>
Thu, 3 Nov 2016 08:55:35 +0000 (16:55 +0800)
Now that the autotools build folded the GDK/GSK bits into the main GTK+
DLL, there are some updates that need to be done for this.  We need to:

-Fold the DllMain() of GDK-Win32 into the main GTK+ DllMain(), as we need
 the HINSTANCE to register the window.  We can't have two DllMain()'s in a
 single DLL.
-Remove the GDK rc(.in) files, as that is not used anymore.  Make the GTK+
 .rc(.in) file load the gtk.ico GTK+ logo file instead so that we still
 get the GTK+ logo for the application icon by default.  Update the
 autotools build files as well.
-Revert commit b9f9980 as LRN pointed out in comment 25 in bug 773299, as
 GTK+ is now a monolithic DLL, and we ought not to export this private
 function.

https://bugzilla.gnome.org/show_bug.cgi?id=773299

gdk/Makefile.am
gdk/win32/gdkmain-win32.c
gdk/win32/rc/Makefile.am
gdk/win32/rc/gdk.rc.in [deleted file]
gsk/gskrendernodeprivate.h
gtk/Makefile.am
gtk/gtk-win32.rc.body.in
gtk/gtkwin32.c

index 8f0ba00cc2de2f852c6ff4d29ee5d7b95f96b9db..e933cb05e843c1324e3e35f9b070009875969511 100644 (file)
@@ -203,8 +203,6 @@ endif # USE_QUARTZ
 
 if USE_WIN32
 libgdk_4_la_LIBADD += win32/libgdk-win32.la
-libgdk_4_la_DEPENDENCIES = win32/libgdk-win32.la win32/rc/gdk-win32-res.o
-libgdk_4_la_LDFLAGS += -Wl,win32/rc/gdk-win32-res.o
 endif # USE_WIN32
 
 if USE_BROADWAY
index 5d17072834b2e3b898ce95c3b14815688c24c134..79dc35f1988612da8b3c2f3e7afe0d3d71632286 100644 (file)
@@ -63,16 +63,6 @@ const GOptionEntry _gdk_windowing_args[] = {
   { NULL }
 };
 
-BOOL WINAPI
-DllMain (HINSTANCE hinstDLL,
-        DWORD     dwReason,
-        LPVOID    reserved)
-{
-  _gdk_dll_hinstance = hinstDLL;
-
-  return TRUE;
-}
-
 void
 _gdk_win32_windowing_init (void)
 {
index 4196109c415f9143e34386279b3fbf78ed011881..beee6fd4ed08bf5a6390be2198b9d3060a972f15 100644 (file)
@@ -1,15 +1,5 @@
 include $(top_srcdir)/Makefile.decl
 
-EXTRA_DIST += \
-       gdk.rc \
-       gdk.rc.in \
-       gtk.ico
-
-if USE_WIN32
-noinst_DATA = gdk-win32-res.o
-endif
-
-gdk-win32-res.o : gdk.rc gtk.ico
-       $(WINDRES) -I $(srcdir) gdk.rc $@
+EXTRA_DIST += gtk.ico
 
 -include $(top_srcdir)/git.mk
diff --git a/gdk/win32/rc/gdk.rc.in b/gdk/win32/rc/gdk.rc.in
deleted file mode 100644 (file)
index 07ab1b4..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-#include <winver.h>
-
-GTK_ICON               ICON                    "gtk.ico"
-
-VS_VERSION_INFO VERSIONINFO
-  FILEVERSION @GTK_MAJOR_VERSION@,@GTK_MINOR_VERSION@,@GTK_MICRO_VERSION@,0
-  PRODUCTVERSION @GTK_MAJOR_VERSION@,@GTK_MINOR_VERSION@,@GTK_MICRO_VERSION@,0
-  FILEFLAGSMASK 0
-  FILEFLAGS 0
-  FILEOS VOS__WINDOWS32
-  FILETYPE VFT_DLL
-  FILESUBTYPE VFT2_UNKNOWN
-  BEGIN
-    BLOCK "StringFileInfo"
-    BEGIN
-      BLOCK "040904B0"
-      BEGIN
-       VALUE "CompanyName", "The GTK developer community"
-       VALUE "FileDescription", "GIMP Drawing Kit"
-       VALUE "FileVersion", "@GTK_VERSION@.0"
-       VALUE "InternalName", "libgdk-win32-@GTK_API_VERSION@-@LT_CURRENT_MINUS_AGE@"
-       VALUE "LegalCopyright", "Copyright © 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald. Modified by the GTK+ Team and others 1997-2011."
-       VALUE "OriginalFilename", "libgdk-win32-@GTK_API_VERSION@-@LT_CURRENT_MINUS_AGE@.dll"
-       VALUE "ProductName", "GTK+"
-       VALUE "ProductVersion", "@GTK_VERSION@"
-      END
-    END
-    BLOCK "VarFileInfo"
-    BEGIN
-      VALUE "Translation", 0x409, 1200
-    END
-  END
index 08c8c7e516ea3175e02bd8a319d182a30438e400..20e6084d0c062cf509125d5c837c9f02ac398246 100644 (file)
@@ -77,7 +77,6 @@ GskRenderNode *gsk_render_node_new (void);
 
 void gsk_render_node_make_immutable (GskRenderNode *node);
 
-_GDK_EXTERN
 void gsk_render_node_get_bounds (GskRenderNode   *node,
                                  graphene_rect_t *frame);
 void gsk_render_node_get_transform (GskRenderNode     *node,
index 582a6872877922bf5dacc461fefb37c2284fb2cd..7eaf2379dea7d9ea4ea84ee2d01983e2c4617991 100644 (file)
@@ -41,8 +41,8 @@ gtk_win32_symbols = -export-symbols $(srcdir)/gtk.def
 gtk_win32_res = gtk-win32-res.o
 gtk_win32_res_ldflag = -Wl,gtk-win32-res.o
 
-gtk-win32-res.o : gtk-win32.rc libgtk4.manifest
-       $(WINDRES) gtk-win32.rc $@
+gtk-win32-res.o : $(top_srcdir)/gdk/win32/rc/gtk.ico gtk-win32.rc libgtk4.manifest
+       $(WINDRES) -I $(top_srcdir)/gdk/win32/rc gtk-win32.rc $@
 
 gtk-win32.rc: gtk-win32.rc.body
        echo "#include <winuser.h>" >>$@
index 4a42d5a666097222a8c5f11bb508d9ac1f12b912..251128fe481d9bd72c5af331ee1a98af16842709 100644 (file)
@@ -1,5 +1,7 @@
 #include <winver.h>
 
+GTK_ICON               ICON                    "gtk.ico"
+
 VS_VERSION_INFO VERSIONINFO
   FILEVERSION @GTK_MAJOR_VERSION@,@GTK_MINOR_VERSION@,@GTK_MICRO_VERSION@,0
   PRODUCTVERSION @GTK_MAJOR_VERSION@,@GTK_MINOR_VERSION@,@GTK_MICRO_VERSION@,0
index bf707ad743d192d00726f2a056f23abc548b87f9..d290505a1cb80c9639c408f0644089a4a7eac802 100644 (file)
@@ -39,7 +39,8 @@
 #define EMPIRIC_MANIFEST_RESOURCE_INDEX 2
 
 
-static HMODULE gtk_dll;
+static HMODULE   gtk_dll;
+extern HINSTANCE _gdk_dll_hinstance;
 
 BOOL WINAPI
 DllMain (HINSTANCE hinstDLL,
@@ -50,6 +51,7 @@ DllMain (HINSTANCE hinstDLL,
     {
     case DLL_PROCESS_ATTACH:
       gtk_dll = (HMODULE) hinstDLL;
+      _gdk_dll_hinstance = hinstDLL;
       break;
     }